package com;


import com.jscm.WindowShow;
import com.jscm.openselect.selectShowWindow;
import com.jscm.showAttribute.AttributeWindow;
import com.jscm.showHexBool.HexBoolWindow;
import com.jscm.showdata.SelectDataView;
import com.scm.all.export.*;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;

import java.util.Arrays;

/**
 * 基于入口配置窗口
 * 为了保证这次的堆内存节省这次不采用全局使用 减少耦合性
 */
public class App extends Application {
    public static Stage stage;

    /**
     * 采用静态块 进行注册文件
     */
    static {
        PathFileJSCM.setDebugFile32("C:\\Users\\www10\\IdeaProjects\\scmJnaApi\\Application\\JscmOneToOne\\Jscm框架完整附属包V1.1.2\\x86\\");
        PathFileJSCM.setDebugFile64("C:\\Users\\www10\\IdeaProjects\\scmJnaApi\\Application\\JscmOneToOne\\Jscm框架完整附属包V1.1.2\\x64\\");
        PathFileJSCM.setIsDebug(true);
    }

    //不解释这个入口了
    public static void main(String[] args){
        Application.launch(args);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        System.err.println(ByteUtils.hexStrToBytes("AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA".replaceAll(" ","")).length);
        stage = primaryStage;
        stage.setTitle("JFX-内存搜索工具V1.0.0");
        stage.setWidth(500);
        stage.setHeight(730);
        stage.setScene(new Scene(WindowShow.pane));
        stage.setResizable(false);
        stage.setAlwaysOnTop(true);
        stage.setIconified(true);
        stage.getIcons().add(new Image("ico.png"));
//        配置全局通用样式
        stage.getScene().getStylesheets().addAll(this.getClass().getClassLoader().getResource("style.css").toExternalForm());
//        配置提权功能
        if(!ProcessAndThreadUtils.elevatePrivileges(ProcessAndThreadUtils.openProcess(ProcessAndThreadUtils.getCurrentProcessId()),4)){
            //提权失败以后进行退出，因为没有权限的话会无法打开常规的软件句柄,所以直接结束
            SystemUtils.messageBoxExW(WindowOperationUtils.windowGetHwnd(),"提升权限失败","温馨提示",0);
            Platform.exit();
            System.exit(0);
        }else {
            System.err.println("进程提升权限成功,但是低于驱动权限！");
        }
        stage.show();
        stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent event) {
                Platform.exit();
                System.exit(0);
            }
        });
    }
}

